﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using CRUD.DAO;
using CapaGestion.Spring;
using GestionadorBaseDatos;
using CapaNegocios;

public partial class InterfazKamalde_Apostar : Base
{
    private static Evento eventoSeleccionado = new Evento();
    private IGestionApuesta gestionarApuesta = AdministradorGestion.getGestionarApuesta();
    private IGestionEvento gestionarEvento = AdministradorGestion.getGestionarEvento();
    private static Pago pagoSeleccionado = new Pago();
    private static FormaPago parametroForma = new FormaPago();
    private static int men = 0;

    protected void Page_Load(object sender, EventArgs e)
    {
        if (men!=0){
            mensajes.alert("Apuesta guardada, en instantes recibira un correo con la operacion solicitada");
        }
        if (Session["login"] == null)
        {
            Response.Redirect("login.aspx");

        }
        else if (((Usuario)Session["login"]).Estado=="ACTIVO")
        {
            
            if (!IsPostBack)
            {
                eventoSeleccionado.NombreEvento = Request.QueryString.Get("cate");
                nombreEvento.Text = eventoSeleccionado.NombreEvento;
                eventoSeleccionado.IdEvento = int.Parse(Request.QueryString.Get("op"));
                eventoSeleccionado = gestionarEvento.GetById(eventoSeleccionado.IdEvento);

                //IBetWebReference.IbetWebServices servicio = new IBetWebReference.IbetWebServices();

                //IBetWebReference.respuestaProporcionWS proporciones = servicio.consultarProporcionEvento(eventoSeleccionado.FechaEvento.ToShortDateString(), ((Proporcion)eventoSeleccionado.Proporciones[0]).Participante.Nombre, ((Proporcion)eventoSeleccionado.Proporciones[1]).Participante.Nombre);
                table2.Visible = true;
                
                //proporcion1.Text = proporciones.proporcionEquipoUno.ToString();
                //proporcion2.Text = proporciones.proporcionEquipoDos.ToString();

                nombreCategoria.Text = eventoSeleccionado.CategoriaAsociada.Nombre;
                comboParticipantes.Items.Clear();
                for (int i = 0; i < eventoSeleccionado.Proporciones.Count; i++)
                {
                    Participante part = gestionarApuesta.getParticipanteId(((Proporcion)eventoSeleccionado.Proporciones[i]).Participante);
                    comboParticipantes.Items.Add(part.Nombre);
                }
                participante1.Text = ((Proporcion)eventoSeleccionado.Proporciones[0]).Participante.Nombre;
                participante2.Text = ((Proporcion)eventoSeleccionado.Proporciones[1]).Participante.Nombre;
                pro.Text = ((Proporcion)eventoSeleccionado.Proporciones[0]).ProporcionParticipante.ToString() + "     -        ";
                pro2.Text = ((Proporcion)eventoSeleccionado.Proporciones[1]).ProporcionParticipante.ToString();
                Usuario u = (Usuario)Session["login"];
                comboTarjetas.Items.Clear();
                if (u.PagosAsociados != null)
                {
                    for (int i = 0; i < u.PagosAsociados.Count; i++)
                    {

                        FormaPago part = gestionarApuesta.getFormaPagoId(((Pago)u.PagosAsociados[i]).FormaPagoAsociado);
                        if (((Pago)u.PagosAsociados[i]).Estatus == "ACTIVO")
                        {
                            comboTarjetas.Items.Add(part.Nombre);
                        }
                    }


                    pagoSeleccionado = ((Pago)u.PagosAsociados[0]);
                    sliderExtender.Minimum = 1;
                    sliderExtender.Maximum = ((Pago)u.PagosAsociados[0]).MontoMaximo;
                }
            }
           
        }
        else if (((Usuario)Session["login"]).Estado == "ADMINISTRADOR")
        {
            mensajes.alert("Eres Administrador, como vas a apostar¿?");

        }
        else
        {
            mensajes.alert("Su cuenta no posee suficientes privilegios para apostar con nosotros; puede estar inactivo o desactivado");
        }
    }

    protected void comboTarjetas_TextChanged(object sender, EventArgs e)
    {
        FormaPago forma = new FormaPago();
        forma.Nombre = comboTarjetas.Text;
        forma = gestionarApuesta.getFormaPagoNombre(forma);
        Usuario u = (Usuario)Session["login"];
        foreach (Pago pago in u.PagosAsociados)
        {
            if (pago.FormaPagoAsociado.IdFormaPago == forma.IdFormaPago)
            {
                pagoSeleccionado = pago;
                sliderExtender.Minimum = 1;
                sliderExtender.Maximum = pago.MontoMaximo;
            }
        }

    }
    protected void aceptarButton_OnClick(object sender, EventArgs e)
    {
        Proporcion ingresarProporcion = (Proporcion)eventoSeleccionado.Proporciones[comboParticipantes.SelectedIndex];
        Apuesta apuestaInsertar = new Apuesta();
        apuestaInsertar.FechaApuesta = DateTime.Now;
        apuestaInsertar.Monto = int.Parse(slidercontrol.Text);
        apuestaInsertar.PagoAsociado = pagoSeleccionado;
        apuestaInsertar.ProporcionAsociado = ingresarProporcion;
        gestionarApuesta.Insert(apuestaInsertar);
        Participante participanteSelecionado = (Participante)gestionarApuesta.getParticipanteId(ingresarProporcion.Participante);
        apuestaInsertar.IdApuesta = gestionarApuesta.GetAll().Count;
        gestionarApuesta.EnviarCorreoConFactura((Usuario)Session["login"], apuestaInsertar, eventoSeleccionado, participanteSelecionado, ingresarProporcion);
        men++;
        IList numeroEventos = gestionarApuesta.GetByEvento(apuestaInsertar.ProporcionAsociado.EventoAsociado);
        if (numeroEventos.Count >= 5)
        {
            ingresarProporcion.EventoAsociado.Estatus= "CERRADO";
            gestionarApuesta.UpdateEvento(ingresarProporcion.EventoAsociado);
        }
        
    }
}
